#ifndef _EGOS_KERNEL_H_
#define _EGOS_KERNEL_H_

#include <egos_types.h>
#include <egos_logging.h>


/*
 * Task management operations
 */
EgosTaskId EgosCreateTask(void (*_taskFunc)(void*), uint32 priority);
EgosTaskId EgosGetCurrentTaskID();
EgosTaskHandle EgosGetTaskHandle(EgosTaskId);

/*
 * mutex operations
 */
EgosMutexHandle EgosCreateMutex();
void EgosDestroyMutex(EgosMutexHandle);
void EgosMutexLock(EgosMutexHandle);
void EgosMutexUnlock(EgosMutexHandle);


/*
 * semaphore operations
 */
EgosSemaphoreHandle EgosCreateSemaphore(uint32 maxCount);
void EgosDestroySemaphore(EgosSemaphoreHandle);
void EgosSemaphoreInc(EgosSemaphoreHandle);
void EgosSemaphoreDec(EgosSemaphoreHandle);
uint32 EgosSemaphoreGetCount(EgosSemaphoreHandle);

// Memory Management


// Device Management



#endif
